#ifndef __THREAD_POOL_HPP__
#define __THREAD_POOL_HPP__
#include <vector>
#include <boost/noncopyable.hpp>
class thread_task;
class worker_thread;
class thread_pool : public boost::noncopyable
{
private:
    /* data */
    int m_count;
    int m_last_thread;
    std::vector<worker_thread*> m_threads;
public:
    static thread_pool* getInstance();
    void dispatch(thread_task* task);
    void init(int thread_count);
    thread_pool(/* args */);
    ~thread_pool();
};
#endif